#include<stdio.h>
int main()
{
 	void P(char w,int *i);							//P函数判断字符是否为+-*/，是返回 1，不是返回0 
	float Js(float x,float y,char w);				//Js函数负责 x和y 之间的计算，计算符号为w 
	void P_f(char w,int *n1);						//P_f函数进行判断w符号为加减还是乘除，加减则n=1，乘除则n=2 
	float a,b,c,mun,h;								//a，b，c存放输入的数字，存放满进行一次运算，mun为最终的结果 
	int i,n;										//i存放P函数的返回值，n存放P_f函数的返回值，n保证每次循环赋值正确 
	char x,y;										//x，y保存计算符号+ - * / 

	printf("请输入算式\n");							//提示用户 
	scanf("%f%c%f%c",&a,&x,&b,&y);					//检测，录入输入 
	P(y,&i);										//判断第二个符号是否有价值，后面是否还有数字需要计算 
	printf("\n_______________________________________________________________________________________________\n\n\n");
	printf("判断字符y是否为+-*/，是返回 1，不是返回0\n");
	if(i==0)										
	{	printf("y并不为+-*/，代码跳到17行，用js()函数对a，b进行计算，并把结果赋值给mun，最后输出mun，程序结束！\n");												//如果第二个符号没有价值 
		mun=Js(a,b,x);								//直接进行前两位数字运算，并输出结果 
		printf("结果为；%.2f\n",mun);
	}

	while(i)										//如果有意义则进入while循环，有意义时 i=1
	{   
			printf("字符是+-*/,代码跳到24行！并录入c的值\n\n"); 
			scanf("%f",&c);								   
			P_f(y,&n);	
			printf("进一步判断符号y是+-还是*/\n\n");	                              
			printf("%.0f %c %.0f %c %.0f\n\n",a,x,b,y,c); 
        if(n==1)
        {
        	printf("符号y的值为+-，代码跳到33行,把a和b用js()函数计算并把结果赋值给a，y赋值给x\n\n");
			a=Js(a,b,x);
			b=c;
			x=y;
			printf("运算完成,"); 
			scanf("%c",&y);
			printf("录入下一个符号给变量y\n\n"); 
		    P(y,&i);
   	printf("\n_______________________________________________________________________________________________\n\n\n");
		    printf("再次判断y的值是否为+-*/\n\n");
			printf("这时 a=%0.0f   b=%0.0f\n\n",a,b); 
		}
		else
		{
			printf("符号y的值为*/，代码跳到48行,把b和c用js()函数计算并把结果赋值给b\n\n");
			b=Js(b,c,y);
			printf("js()函数计算完成\n\n"); 
			scanf("%c",&y);
		    P(y,&i);
  	printf("\n_______________________________________________________________________________________________\n\n\n");
			printf("录入y的值，并用p()函数判断y是否为+-*/\n\n");	
		}
		if(i==0)
		{
			printf("%.0f %c %.0f %c\n\n",a,x,b,y); 
			printf("y并不为+-*/，代码跳到56行，用js()函数对a，b进行计算，并把结果赋值给mun，最后输出mun，程序结束！\n\n");
			mun=Js(a,b,x);
			printf("结果为；%f",mun);
		}
	}
return 0;
}


	void P(char w,int *i)
	{
		switch (w)
		{	
			case '+':
			case '-':
			case '*':
			case '/':*i=1;break;
			default:*i=0;
		}
	}


	void P_f(char w,int *n1)
	{
		switch (w)
		{
			case '+':
			case '-':*n1=1;break;
			case '*':
			case '/':*n1=2;break;
        }
	}

	float Js(float x,float y,char w)
	{
		float mun;
		switch (w)
		{
			case '+':mun=x+y;break; 
			case '-':mun=x-y;break;
			case '*':mun=x*y;break;
			case '/':mun=x/y;break;
		}
		return (mun);
	}